<?php

require 'vendor/autoload.php';
// require 'MyAction.php';

$app = new Slim\App;

$app->get('/home', 'App\Http\Controllers\HomeController:home');

$app->get('/test', 'App\Http\Controllers\TestController:test');

$app->get('/action/{action}', 'App\Http\Controllers\Actions\MyAction');

$app->get('/method1', 'App\Http\Controllers\MyController:method1');

$app->get('/method2/{arg2}', 'App\Http\Controllers\MyController:method2');

$app->get('/method3', 'App\Http\Controllers\MyController:method3');

// $app->get('/sub/test', 'App\Http\Controllers\Sub\HomeController:cc');

$app->group('/users/{id:[0-9]+}', function () {
    $this->map(['GET', 'POST', 'PUT', 'PATCH'], '', function ($request, $response, $args) {
        var_dump($request->getMethod());
    })->setName('user');
    $this->get('/reset-password', function ($request, $response, $args) {
        var_dump($args);
        var_dump($request);
        var_dump('reset user password');
    })->setName('user-password-reset');
});

$app->get('/hello/{name}', function ($request, $response, $args) {
    echo 'hlelo, ', $args['name'];
})->setName('hello');

$app->get('/tmp', function () use ($app) {
    echo $app
        ->getContainer()
        ->get('router')
        ->pathFor('user-password-reset', [
            'id' => 33
        ]);
        var_dump('**********************************');
        // var_dump($app);
        // var_dump($this);
    echo $this
        // ->getContainer()
        ->get('router')
        ->pathFor('user', [
            'id' => 33
        ]);
    var_dump($app);
});

// echo $app
//     ->getContainer()
//     ->get('router')
//     ->pathFor('hello', [
//         'name' => 'safarishi',
//     ]);

// $app->get('/hello/{name}', function ($request, $response, $args) {
//     echo 'hello, ', $args['name'];
// });

// $app->get('/users/{id:[0-9]+}', function ($request, $response, $args) {
//     var_dump($request);
//     var_dump('regexp');
// });

// $app->get('/users[/{id}]', function ($request, $response, $args) {
//     return 'c';
// });

// $app->get('/news[/{year}[/{month}]]', function ($request, $response, $args) {
//     var_dump('year month');
// });

$app->get('/news[/{params:.*}]', function ($request, $response, $args) {
    var_dump($request->getAttribute('params'));
    $params = explode('/', $request->getAttribute('params'));

    var_dump($params);
    exit;
});

// $c = new Slim\Container;

// $c['foundHandler'] = function () {
//     return new Slim\Handlers\Strategies\RequestResponseArgs;
// };

// $app = new Slim\App($c);

// $app->get('/hello/{name}', function ($request, $response, $name) {
//     return $response->write($name);
// });

// $app->get('/hello/{name}', function ($request, $response, $args) {
//     $response->write('Hello, '.$args['name']);
//     return $response;
// });

// $app->get('/', function () {
//     return '/';
// });

// $app->get('/books/{id}', function ($request, $response, $args) {
//     var_dump($args);
//     return 'books id';
// });

// $app->post('/books', function ($request, $response, $args) {
//     var_dump($request);
//     return 'create a book';
// });

// $app->put('/books/{id}', function ($request, $response, $args) {
//     return 'update book '.$args['id'];
// });

// $app->delete('/books/{id}', function ($request, $response, $args) {
//     return 'delete the book of '.$args['id'];
// });

// $app->options('/books/{id}', function ($request, $response, $args) {
//     var_dump($args);
//     return 'options response';
// });

// $app->patch('/books/{id}', function ($request, $response, $args) {
//     var_dump($request->getMethod());
//     return 'patch route';
// });

// $app->any('/user', function ($request, $response, $args) {
//     var_dump($request->getMethod());
//     return 'any route';
// });

// // $app->any('/articles', 'MyRestfulController');

// $app->map(['GET', 'POST'], '/gp', function ($request, $response, $args) {
//     var_dump($response->getReasonPhrase());
//     exit;
//     return $response->withStatus(403, 'Forbidden');
//     return $response->withStatus(400, 'Bad Request');
//     var_dump($response);
//     var_dump($response->getStatusCode());
//     exit;
//     var_dump($request->getMethod());
//     return 'get or post';
// });

$app->run();
